package com.hk.service.kyc;

import java.util.List;

import com.hk.commons.vo.CheckInfo;
import com.hk.commons.vo.ProductUsableCardMsg;
import com.hk.commons.vo.UserCardMsg;

public interface ICoupon {

	/**
	 * 获取卡券描述
	 * @param userCardId
	 * @return
	 */
	public UserCardMsg getCouponInfo(Long userId, Long userCardId);

	
	/**
	 * 获取卡券列表
	 * @param userId
	 * @return
	 */
	public List<UserCardMsg> getCouponList(Long userId, int status);

	/**
	 * 根据产品ID获取可用卡券列表
	 * @param productId
	 * @return
	 */
	public List<ProductUsableCardMsg> getProductUsableCardMsgList(Long productId);

	/**
	 * 获取卡券列表 2.7版本之前
	 * @param userId
	 * @param status
	 * @param productId
	 * @return
	 */
	public List<UserCardMsg> getCouponList(Long userId,int status,Long productId);

	/**
	 * 获取卡券列表
	 * @param userId
	 * @return
	 */
	public List<UserCardMsg> getCouponList(Long userId, int status, Long productId, Long amount,int cardStatus);
	
	/**
	 * 派送卡券
	 * @param userCardId
	 * @param userId
	 * @param cardType
	 */
	public CheckInfo sendCoupon(Long userId, Long cardId);
	
	/**
	 * 激活卡券
	 * @param userCardId
	 * @param userId
	 * @param orderId
	 */
	public CheckInfo activeCoupon(Long userCardId, Long userId, Long orderId, Boolean status);
	
	/**
	 * 根据流水号获取卡券激活、发送的信息
	 * @param ssn
	 * @return
	 */
	public CheckInfo checkCoupon(UserCardMsg userCardMsg, int proSaleType);
	
	/**
	 * 给客户赠送加息券
	 * @param userId
	 * @return
	 */
	public CheckInfo sendJXQToUser(Long userId);
	
	/**
	 * 给客户赠送体验金
	 * @param userId
	 * @return
	 */
	public CheckInfo sendTYJToUser(Long userId);
	
	/**
	 * 给客户赠送家庭律师卡
	 * @param userId
	 * @return
	 */
	public CheckInfo sendJTLSKToUser(Long userId);
	
	/**
	 * 根据流水号获取卡券激活、发送的信息
	 * @param ssn
	 * @return
	 */
	public CheckInfo getActResult(String  ssn);
	
	/**
	 * 根据用户id 获取卡券列表
	 * @param userId
	 * @return
	 */
	public List<UserCardMsg> getCouponList(Long userId );


	/**
	 * 根据卡片类型获取卡片数目
	 * @param cardType
	 * @return
     */
	public Integer countByActivityType(Long userId, String cardType);
}